1. Field of the Invention
This invention generally relates to digital packetized communications and, more particularly, to a channel service manager (CSM) system and method for prioritizing the flow of information streams into, and out of a network processor.
2. Description of the Related Art
As noted in U.S. Pat. No. 7,050,394, communicating over a network often involves a variety of tasks. For example, to send content (e.g., a web-page, e-mail, streaming video, etc.) from one device to another, the content is typically divided into portions carried by different packets. An individual packet includes a payload that stores some portion of the content being sent and a header that includes data used in delivering the packet to its destination. By analogy, the packet's payload is much like a letter being mailed while the header stores information (e.g., a network destination address) that appears on the envelope.
A typical router contains a line card for receiving data packets on one end, performing necessary conversions and sending out the packets at the other end. Among other components, line cards include a framer for framing/de-framing data packets, and a processor for performing protocol conversion and for controlling packet traffic. The framer communicates with the processor using a protocol such as SPI3 or SPI4 (system packet interface), which defines packet and cell transfer standards between a physical layer device (i.e., the framer) and a link layer device (i.e., the processor).
Generally, before transmission, a framer maps one or more packets (or packet portions) into a logical organization of bits known as a frame. In addition to packet data, a frame often includes flags (e.g., start and end of frame flags), a frame checksum that enables a receiver to determine whether transmission errors occurred, and so forth. The framer feeds frame bits to one or more devices that generate signals to be carried over a network connection. For example, for an optic signal, the framer feeds a serializer/deserializer (SERDES) and transceiver that generates optic signals representing the digital data of a frame.
Processing a received frame generally proceeds in the reverse of the process described above. That is, a device physically receives signals over a network connection, determines bit values corresponding to the signals, and passes the bits to a framer. The framer identifies frames within the bit stream and can extract packets stored within the frames.
In network terminology, the components described above perform tasks associated with different layers of a network communication “protocol stack.” For example, the bottom layer, often known as the “physical layer”, handles the physical generation and reception of signals. The “link layer” includes tasks associated with framing. Above the physical and link layers are layers that process packets (the “network layer”) and coordinate communication between end-points (the “transport layer”). Above the transport layer sits the “application layer” that processes the content communicated.
Underrun and overrun are two common problems associated with the framing of data. Overrun involves the sending of too much data, or data at too high of a rate. In this case, data sent to the framer is lost before it can be buffered, which requires that the data be resent. Underrun is associated with sending too little data, or data at too slow of a rate. Some messaging protocols, such as Ethernet, are sensitive to underrun. Ethernet frames are only transmitted if they are “full” of data. Therefore, the transmission of entire Ethernet frames can be delayed as a result of underrun. Conventionally, the use of polling messages, which is a form of handshaking, addresses the overrun problem.
The conventional method of packet routing is called store-and-forward. In this method, a framing device accepts an input packet and buffers the entire packet on the ingress side of the link, knowing the exact number of cells in the packet. The problem with the store-and-forward method is the added latency and memory required to buffer the entire packet. Further, it is difficult to “fairly” serve a multi-channel system if one channel monopolizes the link for the transmission of an entire packet. In cut-through packet routing, a device is able to send the incoming packet cells to the correct egress port as soon as the destination address is known. In a multi-channel system, each remote link can be serviced more often, with smaller sized messages. However, the issue of scheduling transmissions becomes more problematic.
The problem of underrun is conventionally prevented by using significant hardware resources, including options such as dedicated datapath channels from the scheduler to the line interfaces, or large amounts of buffering to store-and-forward packets prior to transmission to the line interfaces. Alternatively, underrun-sensitive interfaces can be assigned a higher priority within a scheduler but this prioritization results in the overall fairness between non-underrun-sensitive and underrun-sensitive interfaces being compromised.
Conventional network processors provide limited support for multiple channelized interfaces, due to the fact that the processors must receive complete packets before they can start processing. Some network processor ingress interfaces have been designed with a small number of gigabit Ethernet ports, with internal buffering and simple packet-based round robin scheduling. Additionally, in the egress direction, network processors are known to introduce jitter in transmission, as a result of processing packets. Typically, there are no scheduling or queuing points in the egress directions, and traffic from network processor is simply demultiplexed out to the line port(s).
It would be advantageous if the flow of information streams into, and out of a network processor could be prioritizing, while optimizing the data flow.